From 7ff9cbeb992c7c20d8cbbca8ce2530930636fe53 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 2 Feb 2016 09:31:53 -0800 Subject: [PATCH] Get Box to implement Source --- src/cargo/core/registry.rs | 6 ++++++ src/cargo/core/source.rs | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/cargo/core/registry.rs b/src/cargo/core/registry.rs index ccfe87cab..6dc2d9cc4 100644 --- a/src/cargo/core/registry.rs +++ b/src/cargo/core/registry.rs @@ -26,6 +26,12 @@ impl Registry for Vec { } } +impl<'a, T: ?Sized + Registry + 'a> Registry for Box { + fn query(&mut self, name: &Dependency) -> CargoResult> { + (**self).query(name) + } +} + /// This structure represents a registry of known packages. It internally /// contains a number of `Box` instances which are used to load a /// `Package` from. diff --git a/src/cargo/core/source.rs b/src/cargo/core/source.rs index 83098c575..e590f661b 100644 --- a/src/cargo/core/source.rs +++ b/src/cargo/core/source.rs @@ -37,6 +37,20 @@ pub trait Source: Registry { fn fingerprint(&self, pkg: &Package) -> CargoResult; } +impl<'a, T: Source + ?Sized + 'a> Source for Box { + fn update(&mut self) -> CargoResult<()> { + (**self).update() + } + + fn download(&mut self, id: &PackageId) -> CargoResult { + (**self).download(id) + } + + fn fingerprint(&self, pkg: &Package) -> CargoResult { + (**self).fingerprint(pkg) + } +} + #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] enum Kind { /// Kind::Git() represents a git repository -- 2.30.2